; Space ORG #8000 DEFS 3 DEFS 3 DrawMaze DEFS 3 PAGE DEFS 3 PageX DEFS 1 PageY DEFS 1 CLS DEFS 3 Random DEFS 3 Rand DEFS 3 Seed DEFS 4 OutItHL DEFS 3 OutItHLAttr DEFS 3 OutItHLcol DEFS 3 ScanKeys DEFS 3 ReadKey DEFS 3 DoScore DEFS 3 DSDamage DEFS 1 DSScore DEFS 2 DSnKeys DEFS 1 DSMode DEFS 1 WayOutX DEFS 1 WayOutY DEFS 1 ExitOpen DEFS 1 ChestPos DEFS 2 KeyA NOP KeyAP NOP KeyF NOP KeyFP NOP KeyO NOP KeyOP NOP KeyC NOP KeyCP NOP KeyS NOP KeySP NOP Keysp NOP KeyspP NOP KeyAL NOP KeyALP NOP KeyAR NOP KeyARP NOP KeyAU NOP KeyAUP NOP KeyAD NOP KeyADP NOP KeyW NOP KeyWP NOP CColour DEFB 0 Start DEFS 3 MoveThings DEFS 3 MoveProj DEFS 3 ManX DEFW 3 ManY DEFW 3 InitProj DEFS 3 InitThings DEFS 3 InitGame DEFS 3 JP ThingMove FA1 DEFS 3 CalcRoomAdd DEFS 3 OpenDoor DEFS 3 CloseDoor DEFS 3 FlipSword DEFS 3 Clear DEFS 3 HitMon DEFS 3 lThing EQU 64 nThing EQU 33 TgAlive EQU 0 TgX EQU 1 TgY EQU 3 TgSpeed EQU 5 TgISpeed EQU 6 TgpMove EQU 7 TgpShape EQU 9 TgMDir EQU 11 TgnArrow EQU 12 TgDamage EQU 13 TgType EQU 14 TgW1X EQU 15 TgW2X EQU 16 TgW1Y EQU 17 TgW2Y EQU 18 TgNDir EQU 19 TgStage EQU 20 TgMode EQU 21 TgTargX EQU 22 TgTargY EQU 23 TgMType EQU 24 TgPause EQU 25 TgGuardDuty EQU 26 TgRoomX EQU 27 TgRoomY EQU 28 TgOffsetX EQU 29 TgOffsetY EQU 30 TgTreas EQU 31 TgUseSword EQU 32 TgMRoomX EQU 33 TgMRoomY EQU 34 TgTDir EQU 35 TgFDir EQU 36 TgSMode EQU 37 TgSSpeed EQU 38 TgSSpeedI EQU 39 TgADRate EQU 40 TgARate EQU 41 TgDRate EQU 42 TgMinDel EQU 43 TgMaxDel EQU 44 TgAStep EQU 45 TgDStep EQU 46 TgTargX16 EQU 47 ;& 48 TgTargY16 EQU 49 ;& 50 TgContDam EQU 51 Sentry EQU 0 Range EQU 5 LookRange EQU 40 ObjectTable EQU #7400 nObjects EQU 8 nArrow EQU 8 ThingTable EQU #B000 ORG #8E00 CallHL JP (HL) CallDE PUSH DE:RET CallBC PUSH BC Ret RET FireArrowL EX AF,AF' LD A,(ThingTable+TgAlive):OR A:RET NZ LD A,R:AND 3:RET NZ CALL CheckPathL:RET C:JP FA1 FireArrowR EX AF,AF' LD A,(ThingTable+TgAlive):OR A:RET NZ LD A,R:AND 3:RET NZ CALL CheckPathR:RET C:JP FA1 FireArrowD EX AF,AF' LD A,(ThingTable+TgAlive):OR A:RET NZ LD A,R:AND 3:RET NZ CALL CheckPathD:RET C:JP FA1 FireArrowU EX AF,AF' LD A,(ThingTable+TgAlive):OR A:RET NZ LD A,R:AND 3:RET NZ CALL CheckPathU:RET C:JP FA1 CheckPathR LD L,(IX+TgRoomX) LD H,(IX+TgRoomY) LD A,(ThingTable+TgRoomX) SUB L RET Z CPR2 CP Range CCF:RET C:LD B,A:LD C,0 SET 6,H SET 7,H CPR0 BIT 5,(HL) JP Z,CPFail BIT 4,(HL) JR Z,CPR1 INC C CPR1 INC L DJNZ CPR0 LD A,C:OR A:RET Z LD A,(IX+TgOffsetY) CP 2:RET C CP 6:CCF:RET CheckPathL LD L,(IX+TgRoomX) LD H,(IX+TgRoomY) LD A,(ThingTable+TgRoomX) SUB L RET Z CPL2 NEG:CP Range CCF:RET C:LD B,A:LD C,0 SET 6,H SET 7,H CPL0 BIT 1,(HL) JR Z,CPFail BIT 0,(HL) JR Z,CPL1 INC C CPL1 DEC L DJNZ CPL0 LD A,C:OR A:RET Z LD A,(IX+TgOffsetY) CP 2:RET C CP 6:CCF:RET CheckPathD LD L,(IX+TgRoomX) LD H,(IX+TgRoomY) LD A,(ThingTable+TgRoomY) SUB H RET Z CPD2 CP Range CCF:RET C:LD B,A:LD C,0 SET 6,H SET 7,H CPD0 BIT 3,(HL) JR Z,CPFail BIT 2,(HL) JR Z,CPD1 INC C CPD1 INC H DJNZ CPD0 LD A,C:OR A:RET Z LD A,(IX+TgOffsetX) CP 2:RET C CP 6:CCF:RET CheckPathU LD L,(IX+TgRoomX) LD H,(IX+TgRoomY) LD A,(ThingTable+TgRoomY) SUB H RET Z CPU2 NEG:CP Range CCF:RET C:LD B,A:LD C,0 SET 6,H SET 7,H CPU0 BIT 7,(HL) JR Z,CPFail BIT 6,(HL) JR Z,CPU1 INC C CPU1 DEC H DJNZ CPU0 LD A,C:OR A:RET Z LD A,(IX+TgOffsetX) CP 2:RET C CP 6:CCF:RET CPFail SCF:RET LookForMan LD A,(ThingTable+TgAlive) OR A:SCF:RET NZ LD HL,(ThingTable+TgRoomX) LD E,(IX+TgRoomX):LD D,(IX+TgRoomY) CALL CheckRoom:JR C InSameRoom LD HL,(ThingTable+TgRoomX) LD A,E:CP L:JR NZ LookLR LD A,D:CP H:JR NZ LookUD InSameRoom XOR A:DEC A:RET CheckRoom PUSH DE LD BC,#C080 ADD HL,BC EX DE,HL ADD HL,BC LD A,(DE) OR A JR Z ChkFail CP (HL) JR NZ ChkFail SCF POP DE RET ChkFail OR A POP DE RET LookLR LD A,D:CP H:SCF:RET NZ LD A,E:CP L:JR NC LookL CALL CheckPathR RET C:LD A,0:OR A:RET LookL CALL CheckPathL RET C:LD A,2:OR A:RET LookUD JR NC LookU CALL CheckPathD RET C:LD A,3:OR A:RET LookU CALL CheckPathU RET C:LD A,1:OR A:RET MonTTFire LD L,(IX+TgX) LD H,(IX+TgX+1) LD A,(ThingTable+TgX):LD E,A LD A,(ThingTable+TgX+1):LD D,A OR A:SBC HL,DE:JR Z FireUD PUSH HL:EX AF,AF' LD L,(IX+TgY) LD H,(IX+TgY+1) LD A,(ThingTable+TgY):LD E,A LD A,(ThingTable+TgY+1):LD D,A OR A:SBC HL,DE:POP DE LD A,H:OR A:RET NZ LD A,L:CP 2:RET NC:EX DE,HL FireLR EX AF,AF' JR C,FireR LD DE,0-LookRange ADD HL,DE:RET C LD A,2:CALL FireArrowL RET FireR LD DE,LookRange-1 ADD HL,DE:RET NC LD A,0:CALL FireArrowR RET FireUD LD L,(IX+TgY) LD H,(IX+TgY+1) LD A,(ThingTable+TgY):LD E,A LD A,(ThingTable+TgY+1):LD D,A OR A:SBC HL,DE RET Z ; ????? JR C,FireD LD DE,0-LookRange ADD HL,DE:RET C LD A,1:CALL FireArrowU RET FireD LD DE,LookRange-1 ADD HL,DE:RET NC LD A,3:CALL FireArrowD RET ThingMove LD L,(IX+TgpShape) LD H,(IX+TgpShape+1) CALL CallHL Hacky0 LD A,(IX+TgMode) CALL AccelDecel CALL LookForMan:JR C Hack:JP M Attack Hack CALL MoveThing LD A,(IX+TgMDir):LD (IX+TgFDir),A Hacky CALL CalcRoomAdd LD (IX+TgOffsetX),E LD (IX+TgOffsetY),D LD (IX+TgRoomX),L LD (IX+TgRoomY),H LD L,(IX+TgpShape) LD H,(IX+TgpShape+1) CALL CallHL JP MonTTFire Attack BIT 5,(IX+TgMode):JR NZ Att1 LD (IX+TgADRate),1 LD (IX+TgStage),5 Att1 LD (IX+TgMode),#60:RES 7,(IY+64) SET 7,(IX+TgContDam) CALL WakeWarlock CALL FindTargPos CALL MoveToTarget JR Hacky HackHim LD A,(AttDir):LD (IX+TgFDir),A LD A,(IX+TgContDam) BIT 7,A:RET Z AND #7F LD IY,ThingTable CALL HitMon CALL FlipSword OR A RET MoveToTarget LD L,(IX+TgTargY16) LD H,(IX+TgTargY16+1) LD E,(IX+TgY) LD D,(IX+TgY+1) OR A:SBC HL,DE PUSH DE PUSH HL LD L,(IX+TgTargX16) LD H,(IX+TgTargX16+1) LD E,(IX+TgX) LD D,(IX+TgX+1) OR A:SBC HL,DE LD C,L POP HL LD B,L POP HL EX DE,HL LD A,B:OR C JR Z HackHim LD (IX+TgFDir),A BIT 7,B JR NZ MTT2 BIT 7,C JR NZ MTT1 LD A,C CP B JP C AttDR JP AttRD MTT1 LD A,C NEG CP B JP C AttDL JP AttLD MTT2 LD A,B NEG LD B,A BIT 7,C JR NZ MTT3 LD A,C CP B JR C AttUR JR AttRU MTT3 LD A,C NEG CP B JR C AttUL AttLU LD (IX+TgMDir),2 LD (IX+TgFDir),2 DEC HL CALL MonClear JP NC AttMove LD (IX+TgMDir),1 LD (IX+TgFDir),1 INC HL DEC DE CALL MonClear JP NC AttMove JP NoMove AttUL LD (IX+TgMDir),1 LD (IX+TgFDir),1 DEC DE CALL MonClear JP NC AttMove LD (IX+TgMDir),2 LD (IX+TgFDir),2 INC DE DEC HL CALL MonClear JP NC AttMove JP NoMove AttRU LD (IX+TgMDir),0 LD (IX+TgFDir),0 INC HL CALL MonClear JP NC AttMove LD (IX+TgMDir),1 LD (IX+TgFDir),1 DEC HL DEC DE CALL MonClear JP NC AttMove JP NoMove AttUR LD (IX+TgMDir),1 LD (IX+TgFDir),1 DEC DE CALL MonClear JP NC AttMove LD (IX+TgMDir),0 LD (IX+TgFDir),0 INC DE INC HL CALL MonClear JP NC AttMove JP NoMove AttLD LD (IX+TgMDir),2 LD (IX+TgFDir),2 DEC HL CALL MonClear JR NC AttMove LD (IX+TgMDir),3 LD (IX+TgFDir),3 INC HL INC DE CALL MonClear JR NC AttMove JR NoMove AttDL LD (IX+TgMDir),3 LD (IX+TgFDir),3 INC DE CALL MonClear JR NC AttMove LD (IX+TgMDir),2 LD (IX+TgFDir),2 DEC DE DEC HL CALL MonClear JR NC AttMove JR NoMove AttRD LD (IX+TgMDir),0 LD (IX+TgFDir),0 INC HL CALL MonClear JR NC AttMove LD (IX+TgMDir),3 LD (IX+TgFDir),3 DEC HL INC DE CALL MonClear JR NC AttMove JR NoMove AttDR LD (IX+TgMDir),3 LD (IX+TgFDir),3 INC DE CALL MonClear JR NC AttMove LD (IX+TgMDir),0 LD (IX+TgFDir),0 DEC DE INC HL CALL MonClear JR NC AttMove JR NoMove AttMove LD (IX+TgX),L:LD (IX+TgX+1),H LD (IX+TgY),E:LD (IX+TgY+1),D LD (IX+TgStage),5 SCF:RET NoMove DEC (IX+TgStage) SCF RET NZ OR A RET MonClear CALL Clear RET C CALL MC1 RET C LD A,(IX+TgW1Y) CP 2 RET Z INC DE CALL Clear JR C MC0 CALL MC1 MC0 DEC DE RET MC1 LD A,(IX+TgW1X) CP 2 RET Z INC HL CALL Clear DEC HL RET FollowHim RES 7,(IX+TgContDam) PUSH IY:CALL MoveToTarget:POP IY RET C:LD (IX+TgMode),0:JP MLG0 AttDir NOP FindTargPos PUSH IX:LD IX,ThingTable CALL CalcRoomAdd POP IX LD A,E CP 3 JR NC FTPr LD A,2:LD (AttDir),A LD HL,(ThingTable+TgX) LD A,R:BIT 0,A:JR NZ FTPl1 INC HL FTPl1 INC HL LD (IX+TgTargX16),L LD (IX+TgTargX16+1),H LD HL,(ThingTable+TgY) LD (IX+TgTargY16),L LD (IX+TgTargY16+1),H RET FTPr LD HL,(ThingTable+TgX) LD A,0:LD (AttDir),A LD A,R:BIT 0,A:JR NZ FTPr1 DEC HL FTPr1 DEC HL LD (IX+TgTargX16),L LD (IX+TgTargX16+1),H LD HL,(ThingTable+TgY) LD (IX+TgTargY16),L LD (IX+TgTargY16+1),H RET ManLogic BIT 4,(IX+TgMode):JR Z MLG1 LD L,(IX+TgRoomX):LD H,(IX+TgRoomY) LD E,(IX+TgMRoomX):LD D,(IX+TgMRoomY) OR A:SBC HL,DE:JR NZ MLG1 RES 4,(IX+TgMode) RES 5,(IX+TgMode) RES 6,(IX+TgMode) LD (IX+TgADRate),1 POP HL MLG0 LD A,(IY+64):AND 3:XOR 2 JP InitHomePos MLG1 CALL LookForMan:RET C CALL WakeWarlock LD HL,(ThingTable+TgRoomX) LD (IX+TgMRoomX),L LD (IX+TgMRoomY),H SET 4,(IX+TgMode) SET 5,(IX+TgMode) RES 7,(IY+64) RES 3,(IX+TgMode) LD (IX+TgADRate),1 LD (IX+TgTDir),A RET ChaseMan LD A,(IX+TgTDir):JP InitHomePos AccelDecel BIT 5,(IX+TgMode) JR NZ Accel LD A,(IX+TgISpeed) CP (IX+TgMaxDel) JR NC PutItAway DEC (IX+TgADRate) RET NZ ADD A,(IX+TgDStep) LD (IX+TgISpeed),A LD A,(IX+TgDRate) LD (IX+TgADRate),A RET WakeWarlock PUSH AF:LD A,(IX+TgMType):CP #FF JR NZ GoAway LD (IX+TgMType),2 LD (IX+TgISpeed),11 GoAway POP AF:RET PutItAway LD A,(IX+TgSMode) OR A:RET Z CP 5 RET NZ INC A LD (IX+TgSMode),A RET Accel LD A,(IX+TgISpeed) CP (IX+TgMinDel) RET C RET Z DEC (IX+TgADRate) RET NZ SUB (IX+TgAStep) LD (IX+TgISpeed),A LD A,(IX+TgARate) LD (IX+TgADRate),A LD A,(IX+TgSMode) OR A:RET NZ JP FlipSword MoveThing LD L,(IX+TgRoomX) LD H,(IX+TgRoomY) SET 6,H:SET 7,H PUSH HL:POP IY LD A,(IX+TgMode) BIT 0,A:JP NZ HomeOnPosn BIT 1,A:JP NZ GoToNextCell BIT 3,A:JP NZ GetBack LookForExit CALL ManLogic BIT 4,(IX+TgMode):JP NZ ChaseMan BIT 6,(IX+TgMode):JP NZ FollowHim LD A,(IX+TgMType):CP #FF:RET Z CALL FindAllExits LD A,C CP 1 JP Z DW1exit CP 2 JP Z DW2exit LD A,(IX+TgMType) AND #FE CP 0 JP Z RandomChoice CP 2 JP Z WallFollow CP 4 JP Z ManFollow RandomChoice BIT 0,(IX+TgMType) JR NZ NoDoubleBack LD A,C CALL Random LD HL,ExitList ADD A,L:LD L,A LD A,(HL) JP InitHomePos NoDoubleBack LD A,(IX+TgMDir):XOR #2:LD B,A TryAgain LD A,C CALL Random LD HL,ExitList ADD A,L:LD L,A LD A,(HL) CP B JR Z,TryAgain JP InitHomePos WallFollow LD A,C:CP 4:JP Z DW4exit LD A,(IX+TgMDir):XOR #2:LD B,A BIT 0,(IX+TgMType) JP NZ FollowR LD HL,ExitList WFL1 LD A,(HL) CP B JR Z WFL2 INC HL JR WFL1 WFL2 DEC HL LD A,(HL) CP #FF JP NZ InitHomePos LD HL,ExitList LD A,L:ADD A,C:DEC A:LD L,A LD A,(HL) JP InitHomePos FollowR LD HL,ExitList WFR1 LD A,(HL) CP B JR Z WFR2 INC HL JR WFR1 WFR2 INC HL LD A,(HL) CP #FF JP NZ InitHomePos LD HL,ExitList LD A,(HL) JP InitHomePos ManFollow LD A,(IY+64) BIT 2,A:JP Z WallFollow AND #3:XOR 2 JP InitHomePos DW1exit LD A,(ExitList) JP InitHomePos DW4exit LD A,R:AND 1:XOR (IX+TgMode) LD (IX+TgMode),A LD A,(IX+TgNDir) JP InitHomePos DW2exit LD A,(IX+TgMDir):XOR #2:LD B,A LD A,(ExitList) CP B:JP NZ InitHomePos LD A,(ExitList+1) JP InitHomePos RecloseDoor RES 2,(IX+TgMode) LD A,(IX+TgMDir):XOR 2 LD (IX+TgMDir),A CALL CloseDoor LD A,(IX+TgMDir):XOR 2 LD (IX+TgMDir),A RET FindAllExits LD HL,ExitList LD C,0 LD A,(IY) AND #30:JR Z FPE1 LD (HL),0 INC HL INC C FPE1 LD A,(IY) AND #C0:JR Z FPE2 LD (HL),1 INC HL INC C FPE2 LD A,(IY) AND #03:JR Z FPE3 LD (HL),2 INC HL INC C FPE3 LD A,(IY) AND #0C:RET Z LD (HL),3 INC HL INC C FPE4 LD (HL),#FF RET InitHomePos LD (IX+TgNDir),A CALL FindExitPos LD (IX+TgTargX),L LD (IX+TgTargY),H SET 0,(IX+TgMode) LD A,(IX+TgMDir) XOR 2 CP (IX+TgNDir) JP Z HomeOnPosn BIT 2,(IX+TgMode) JP Z HomeOnPosn LD A,R:AND 7 JP Z HomeOnPosn BIT 5,(IX+TgMode) JP NZ HomeOnPosn JP RecloseDoor FindExitPos OR A :JP Z ExitR DEC A:JP Z ExitU DEC A:JP Z ExitL LD H,(IX+TgW2Y) LD L,3 RET ExitL LD H,3 LD L,1 RET ExitU LD H,1 LD L,3 RET ExitR LD H,3 LD L,(IX+TgW2X) RET HomeOnPosn BIT 4,(IX+TgMode):JR NZ HOP1 CALL LookForMan:JR C HOP1 RES 0,(IX+TgMode):RET HOP1 LD A,(IX+TgTargY) SUB (IX+TgOffsetY):LD H,A LD A,(IX+TgTargX) SUB (IX+TgOffsetX):LD L,A LD A,(IX+TgOffsetX) LD A,(IX+TgOffsetY) LD A,H:OR L:JP Z HomeOver BIT 7,H JR NZ HP2 BIT 7,L JR NZ HP1 LD A,L CP H JP C MinDown JP MinRight HP1 LD A,L NEG CP H JP C MinDown JP MinLeft HP2 LD A,H NEG LD H,A BIT 7,L JR NZ HP3 LD A,L CP H JP C MinUp JP MinRight HP3 LD A,L NEG CP H JP C MinUp JP MinLeft HomeOver RES 0,(IX+TgMode) SET 1,(IX+TgMode) LD A,(IX+TgNDir) LD (IX+TgMDir),A LD (IX+TgStage),0 JP GoToNextCell GetBack CALL LookForMan JR NC GExit LD A,(IX+TgStage) OR A:JR Z Stage0 DEC A:JR Z Stage1 DEC A:JR Z Stage2 DEC A:JP Z Stage3 DEC A:JR Z Stage1 DEC A:JR Z Stage2 LD (IX+TgStage),0 DEC (IX+TgGuardDuty) JR NZ Stage0 GExit RES 3,(IX+TgMode) SET 2,(IX+TgMode) RES 7,(IY+64) RET Stage1 LD A,(IX+TgNDir) XOR 2 LD (IX+TgMDir),A INC (IX+TgStage) LD (IX+TgPause),10 JP RecloseDoor Stage2 LD A,(IX+TgNDir) XOR 2 LD (IX+TgMDir),A CALL LookForMan DEC (IX+TgPause) RET NZ INC (IX+TgStage) RET Stage0 LD A,(IX+TgNDir) DEC A:AND 3 LD (IX+TgMDir),A LD A,(IX+TgNDir) S0 OR A JR Z S0R DEC A JR Z S0U DEC A JR Z S0L LD A,(IX+TgOffsetX) CP 1 JP NZ Left INC (IX+TgStage) RET S0L LD A,(IX+TgOffsetY) CP 1 JP NZ Up INC (IX+TgStage) RET S0U LD A,(IX+TgOffsetX) CP (IX+TgW2X) JP NZ Right INC (IX+TgStage) RET S0R LD A,(IX+TgOffsetY) CP (IX+TgW2Y) JP NZ Down INC (IX+TgStage) RET Stage3 LD A,(IX+TgNDir) INC A:AND 3 LD (IX+TgMDir),A LD A,(IX+TgNDir) XOR 2 JR S0 MinRight LD (IX+TgMDir),0:JP Right MinUp LD (IX+TgMDir),1:JP Up MinLeft LD (IX+TgMDir),2:JP Left MinDown LD (IX+TgMDir),3:JP Down GoToNextCell LD A,(IX+TgMDir) OR A JP Z MoveRight DEC A JP Z MoveUp DEC A JP Z MoveLeft LD A,(IX+TgStage) OR A JR NZ MD1 BIT 2,(IY) CALL NZ,Guard BIT 3,(IY) JR NZ MD1 BIT 2,(IY):JP Z OhFuck CALL OpenDoor SET 2,(IX+TgMode) RET MD1 CALL Down INC (IX+TgStage) LD A,(IX+TgStage) SUB (IX+TgW1Y) RET NZ RES 1,(IX+TgMode) RET MoveLeft LD A,(IX+TgStage) OR A JR NZ ML1 BIT 0,(IY) CALL NZ Guard BIT 1,(IY) JR NZ ML1 BIT 0,(IY):JP Z OhFuck CALL OpenDoor SET 2,(IX+TgMode) RET ML1 CALL Left INC (IX+TgStage) LD A,(IX+TgStage) SUB (IX+TgW1X) RET NZ RES 1,(IX+TgMode) RET MoveUp LD A,(IX+TgStage) OR A JR NZ MU1 BIT 6,(IY) CALL NZ Guard BIT 7,(IY) JR NZ MU1 BIT 6,(IY):JP Z OhFuck CALL OpenDoor SET 2,(IX+TgMode) RET MU1 CALL Up INC (IX+TgStage) LD A,(IX+TgStage) SUB (IX+TgW1Y) RET NZ RES 1,(IX+TgMode) RET MoveRight LD A,(IX+TgStage) OR A JR NZ MR1 BIT 4,(IY) CALL NZ Guard BIT 5,(IY) JR NZ MR1 BIT 4,(IY):JP Z OhFuck CALL OpenDoor SET 2,(IX+TgMode) RET MR1 CALL Right INC (IX+TgStage) LD A,(IX+TgStage) SUB (IX+TgW1X) RET NZ RES 1,(IX+TgMode) RET Move LD A,(IX+TgMDir) DEC A JR Z Up DEC A JR Z Left DEC A JR Z Down Right LD L,(IX+TgX):LD H,(IX+TgX+1) INC HL LD (IX+TgX),L:LD (IX+TgX+1),H RET Up LD L,(IX+TgY):LD H,(IX+TgY+1) DEC HL LD (IX+TgY),L:LD (IX+TgY+1),H RET Left LD L,(IX+TgX):LD H,(IX+TgX+1) DEC HL LD (IX+TgX),L:LD (IX+TgX+1),H RET Down LD L,(IX+TgY):LD H,(IX+TgY+1) INC HL LD (IX+TgY),L:LD (IX+TgY+1),H RET OhFuck JP RandomChoice Guard LD A,R:AND 7:RET NZ BIT 7,(IY+64):RET NZ BIT 5,(IX+TgMode):RET NZ LD A,(IX+TgISpeed):CP (IX+TgMaxDel) RET C POP HL SET 7,(IY+64) RES 1,(IX+TgMode) SET 3,(IX+TgMode) LD A,(IX+TgMDir) LD (IX+TgNDir),A LD (IX+TgStage),0 LD (IX+TgGuardDuty),20 JP CloseDoor ORG $ ! #0007 + 1 DEFB #FF ExitList DEFW 0,0 DEFB #FF OAlp RLCA CALL C OA1 CALL NC OA0 DJNZ OAlp RET OA1 PUSH AF:PUSH BC LD A,#31 CALL OutItHL INC L POP BC:POP AF RET OA0 PUSH AF:PUSH BC LD A,#30 CALL OutItHL INC L POP BC:POP AF RET ENDY EQU $